package com.enen.controller;

import com.enen.anno.LogOperation;
import com.enen.pojo.*;
import com.enen.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/*
* 员工管理响应层
* */
@Slf4j
@RequestMapping("/emps")
@RestController
public class EmpController {
    @Autowired
    private EmpService empService;
    // 员工分页查询
    @GetMapping
    public Result findAll(EmpQueryParam empQueryParam){
        log.info("分页查询:{}",empQueryParam);
        PageResult<Emp> pageResult = empService.page(empQueryParam);
        return Result.success(pageResult);
    }

    /**
     * 新增员工
     * */
    // RequestBody 前端发送的json格式的数据 通常传入对象当中，json的键名和属性名一致
    @LogOperation
    @PostMapping
    public Result sava(@RequestBody Emp emp){
        log.info("新增员工:{}",emp);
        empService.sava(emp);
        return Result.success();
    }

    /**
     * 删除员工信息
     * */
    @LogOperation
    @DeleteMapping
    public Result delect(@RequestParam List<Integer> ids){
        log.info("根据id批量删除员工:{}",ids);
        empService.delect(ids);
        return Result.success();
    }

    /**
     * 根据id查询员工信息
     */
    @GetMapping("/{id}")
    public Result getInfo(@PathVariable Integer id){
        log.info("根据ID查询员工信息:{}", id);

        Emp emp = empService.getInfo(id);

        return Result.success(emp);
    }

    /**
     * 根据id修改员工信息
     */
    // @RequestBody接受前端发送的json请求数据封装到对象中
    @LogOperation
    @PutMapping
    public Result update(@RequestBody Emp emp){
        log.info("根据id修改员工信息{}",emp);

        empService.updateById(emp);
        return Result.success();
    }
    // 查询所有员工信息
    @GetMapping("/list")
    public Result getAll(){
        log.info("查询所有员工信息");
        List<Emp> list = empService.getAll();
        return Result.success(list);
    }
}
